<?php


namespace api\project\controller;


use cmf\controller\RestBaseController;
use http\Url;

class ExpressController extends    RestBaseController
{
    // CURL
    public function curlRequest($type, $url, $contentType, $data = [], $timeout = 60)
    {
        try {
            $type = strtoupper($type);
            $curl = curl_init();
            curl_setopt($curl, CURLOPT_URL, $url); // 设置请求链接
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 不直接输出页面
            curl_setopt($curl, CURLOPT_HEADER, 0); // 获取响应头向下
            curl_setopt($curl, CURLOPT_TIMEOUT, $timeout);   // 请求超时时间，单位：秒
            curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1');
            if (substr($url, 0, 5) == 'https') {
                // 自动判断是否是 https 提交
                curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
                // https请求，不验证证书和 hosts
                curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
            }
            // 判断 Content-Type 类型
            if ($contentType == 'json') {
                curl_setopt($curl, CURLOPT_HTTPHEADER, ['Content-Type:application/json']);
            }
            if ($contentType == 'form') {
                curl_setopt($curl, CURLOPT_HTTPHEADER, ['Content-Type:application/x-www-form-urlencoded']);
            }
            switch ($type) {
                case "GET" :
                    curl_setopt($curl, CURLOPT_HTTPGET, true);
                    curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($data));
                    break;
                case "POST":
                    curl_setopt($curl, CURLOPT_POST, true);
                    if ($contentType == 'json') {
                        curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));
                    }
                    if ($contentType == 'form') {
                        curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($data));
                    }
                    break;
            }
            $result = curl_exec($curl);
            $err_code = curl_errno($curl);
            $curlInfo = curl_getinfo($curl);
            curl_close($curl);
            if ($err_code) {
                return ['status' => 'error', 'msg' => 'sendRequestError:' . $err_code];
            }
            if ($curlInfo['http_code'] == 200) {
                return json_decode($result, true);
            }
            return false;
        } catch (\Exception $e) {
            return ['status' => 'error', 'msg' => $e->getMessage()];
        }
    }
    public function ExpressApi()
    {
        //应用及参数
        $RequestData = [
            'LogisticCode'=>'JDVE10772172605'
        ];
        $RequestData = json_encode($RequestData);
        //
        $ApiKey = '99e4d1b1-0c1d-4099-b1f5-94f04884209f';
        $DataSign = urlencode(base64_encode(md5($RequestData.$ApiKey)));
        $url = 'https://api.kdniao.com/Ebusiness/EbusinessOrderHandle.aspx';
        $data = [
            'RequestData'=>$RequestData,
            'RequestType'=>8002,
            'EBusinessID'=>1855238,
            'DataSign'=>$DataSign,
            'DataType'=>2
        ];
//        halt($data);
        $res = $this->curlRequest('POST',$url,'form',$data);
        halt($res);
    }
    public function ExpressApi2()
    {
        //应用及参数
        $RequestData = [
            'ShipperCode'=>"JD",
            'LogisticCode'=>'JDVE10772172605',
//            'IsReturnRouteMap'=>1,
//            "Sender"=>[
//            "ProvinceName"=>"广东省",
//            "CityName"=>"深圳市",
//            "ExpAreaName"=>"福田区",
//            "Address"=>"某街道某路某小区"
//            ],
//            "Receiver"=>[
//            "ProvinceName"=>"广东省",
//            "CityName"=>"深圳市",
//            "ExpAreaName"=>"龙华新区",
//            "Address"=>"某街道某路某小区"
//            ]
        ];
        $RequestData = json_encode($RequestData);
        //
        $ApiKey = '99e4d1b1-0c1d-4099-b1f5-94f04884209f';
        $DataSign = urlencode(base64_encode(md5($RequestData.$ApiKey)));
        $url = 'https://api.kdniao.com/Ebusiness/EbusinessOrderHandle.aspx';
        $data = [
            'RequestData'=>$RequestData,
            'RequestType'=>8002,
            'EBusinessID'=>1855238,
            'DataSign'=>$DataSign,
            'DataType'=>2
        ];
//        halt($data);
        $res = $this->curlRequest('POST',$url,'form',$data);
        halt($res);
    }
}